<template>
  <div>
    这里是详情
    <!-- <transition name="hehe">
      <div class="test" v-if="show">1313</div>
    </transition > -->
    <!-- <transition-group name="hehe">
      <div class="test" v-if="show" key="1">1313</div>
      <div class="test" v-if="show" key="2">1313</div>
    </transition-group > -->
    <!-- animate 动画 -->
    <transition 
      enter-active-class="animate__animated animate__fadeInLeft"
      leave-active-class="animate__animated animate__fadeOutRight"
    >
      <div class="test" v-if="show">1313</div>
    </transition >
  </div>
</template>
<script>
export default {
  data() {
    return {
      show:true
    }
  },
  mounted() {
    // console.log("挂载",this.$route)
    console.log("第一次挂载请求id:",this.$route.params.id)
  },
  beforeRouteEnter(to, from, next) {
    console.log("进入组件",to)
    // 在渲染该组件的对应路由被 confirm 前调用
    // 不！能！获取组件实例 `this`
    // 因为当守卫执行前，组件实例还没被创建
    next()
  },
  beforeRouteUpdate(to, from, next) {
    // 在当前路由改变，但是该组件被复用时调用
    // 举例来说，对于一个带有动态参数的路径 /foo/:id，在 /foo/1 和 /foo/2 之间跳转的时候，
    // 由于会渲染同样的 Foo 组件，因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
    // 可以访问组件实例 `this`
    // console.log('组件更新')
    // 首次组件进入创建无法触发
     console.log("组件更新请求id:",to.params.id)
    next()
  },
  beforeRouteLeave(to, from, next) {
    console.log("离开组件")
    // 导航离开该组件的对应路由时调用
    // 可以访问组件实例 `this`
    next()
  }
}
</script>
<style>
.test {
  width: 100px;
  height: 100px;
  background: red;
}
.hehe-enter {
  opacity: 0;
}
.hehe-enter-to {
  opacity: 1;
}
.hehe-enter-active {
  transition: opacity  3s;
}
.hehe-leave {
  opacity: 1;
}
.hehe-leave-to {
  opacity: 0;
}
.hehe-leave-active {
  transition: opacity  3s;
}
</style>